package packageBusiness;

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import packageDataAccess.InscriptionSyllathequeData;
import packageException.*;
import packageModel.Utilisateur;

/**
 *
 * @author Lionel & Julien
 */
public class InscriptionManager {
    
    /**
     * Inscription d'un nouvel utilisateur
     * 
     * @param pseudo
     * @param password
     * @param passwordConf
     * @param email
     * @param nom
     * @param prenom
     * @param adresse
     * @param phone
     * @param url
     * @param isProf
     * @return Utilisateur
     * @throws InscriptionException
     * @throws InvalideDonneesException
     * @throws DataException  
     */
    public Utilisateur InscriptionSyllatheque(String pseudo, String password, String passwordConf, String email, String nom, String prenom, String adresse, String phone, String url, Boolean isProf) throws 
            InscriptionException, 
            InvalideDonneesException,
            DataException {
        if( pseudo.toString().equals("") || 
            password.toString().equals("") || 
            passwordConf.toString().equals("") || 
            email.toString().equals("") || 
            nom.toString().equals("") || 
            prenom.toString().equals("") || 
            adresse.toString().equals("") || 
            phone.toString().equals("")
          ) throw new InvalideDonneesException();
        // Mail
        Pattern p = Pattern.compile("^[A-Z0-9._+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$");
        Matcher m = p.matcher(email.toString().toUpperCase());
        if(m.matches() == false) throw new InvalideDonneesException();
        // Tel
        p = Pattern.compile("^[0-9]{9,10}");
        m = p.matcher(phone.toString().toUpperCase());
        if(m.matches() == false) throw new InvalideDonneesException();
        // Password
        if(!(password.toString().equals(passwordConf.toString()))) throw new InvalideDonneesException();
        
        // On peut l'inscrire !
        InscriptionSyllathequeData bd_is = new InscriptionSyllathequeData();
        return bd_is.inscriptionSyl(pseudo, password, passwordConf, email, nom, prenom, adresse, phone, url, isProf);
    }
}
